package com.br.fsm.projectdelivery.controlador;

import java.util.ArrayList;

import com.br.fsm.projectdelivery.basica.Endereco;
import com.br.fsm.projectdelivery.excecao.ControladorException;
import com.br.fsm.projectdelivery.excecao.RepositorioException;
import com.br.fsm.projectdelivery.repositorio.IRepositorioEndereco;
import com.br.fsm.projectdelivery.repositorio.RepositorioEndereco;

public class ControladorEndereco extends ControladorBasico implements IControladorEndereco {

	private IRepositorioEndereco repositorioEndereco;
	private static ControladorEndereco instance;

	private ControladorEndereco() {
		super();
		repositorioEndereco = (IRepositorioEndereco) RepositorioEndereco
				.getInstance();
	}

	public static ControladorEndereco getInstance() {
		if (instance == null) {
			instance = new ControladorEndereco();
		}
		return instance;
	}
	
	@Override
	public Endereco getEnderecoById(int id) throws ControladorException {
		try {
			return repositorioEndereco.getEnderecoById(id);
		} catch (RepositorioException e) {
			throw new ControladorException(e.getMessage());
		}
	}

	@Override
	public ArrayList<Endereco> getAllEndereco() throws ControladorException {
		try {
			return repositorioEndereco.getAllEndereco();
		} catch (RepositorioException e) {
			throw new ControladorException(e.getMessage());
		}
	}

	@Override
	public void insertEndereco(Endereco endereco) throws ControladorException {
		try {
			repositorioEndereco.insertEndereco(endereco);
		} catch (RepositorioException e) {
			throw new ControladorException(e.getMessage());
		}
	}

	@Override
	public void updateEndereco(Endereco endereco) throws ControladorException {
		try {
			repositorioEndereco.updateEndereco(endereco);
		} catch (RepositorioException e) {
			throw new ControladorException(e.getMessage());
		}
	}

	@Override
	public void removeEndereco(Endereco endereco) throws ControladorException {
		try {
			repositorioEndereco.removeEndereco(endereco);
		} catch (RepositorioException e) {
			throw new ControladorException(e.getMessage());
		}
	}
}
